"""
Flask中设置响应数据主要有两种方式:
    设置多个返回值
    自定义响应对象
"""
# 1.三个返回值
# Flask中 视图函数的返回值可以设置三个, 分别对应 响应体, 响应状态码, 响应头
# from flask import Flask, redirect, url_for
#
# app = Flask(__name__)
#
#
# @app.route('/demo1')
# def demo1():
#     # 返回值:  响应体, 响应状态码, 响应头
#     return 'demo1', 400, {'A': 40}
#
#
# if __name__ == '__main__':
#     app.run(debug=True)

# 2.自定义响应对象
# 视图函数返回的 str / bytes 类型数据会被包装为 Response 响应对象, 也可以 创建响应对象来 自定义响应头 等信息
from flask import Flask, make_response, Response

app = Flask(__name__)


# 自定义响应对象
@app.route('/demo2')
def demo2():
    # 视图函数的返回值可以为str/bytes类型, 并且flask内部会将其包装为Response响应对象
    # return 'hello flask'

    # 创建响应对象     设置响应头时,需要手动创建响应对象
    response = make_response('hello flask')  # type: Response
    # 设置状态码
    response.status_code = 400
    # 设置响应头
    response.headers['B'] = 10
    return response


if __name__ == '__main__':
    app.run(debug=True)
